package com.demo.behavioral.observer;

/**
 * 观察者模式
 * 观察者模式定义了一种一对多的依赖关系，让多个观察者对象同时监听某一个主题对象。
 * 这个主题对象在状态上发生变化时，会通知所有观察者对象，让它们能够自动更新自己。
 * 适用于一对多的场合，如购票，购票后系统要记录日志、记录数据库、发送短信等操作，此时用观察者模式实现最佳。 
 * 实现方法是定义2个接口：观察者接口、被观察者接口，然后分别定义多个类实现观察者接口，一个类实现被观察者接口，
 * 被观察者类注册自己需要通知的观察者，被观察者类某个业务逻辑发生时通知观察者对象，每个观察者执行自己的业务逻辑。
 * @author allen
 *
 */
public class Test {
	
	public static void main(String[] args) {
		//一次购票对象添加上全部观察者对象
		CtripTicketBuy ctripTicketBuy = new CtripTicketBuy();
		ctripTicketBuy.addObserver(new LogObserver());
		ctripTicketBuy.addObserver(new MSMObserver());
		//购票时
		ctripTicketBuy.buyTicket();
		
	}

}
